package thread;

/**
 * wait & sleep
 * wait是让线程等待，等待其他县城唤醒，是一个通知机制
 * sleep是让线程休眠一段时间
 * wait需要搭配synchronized，是Object的方法
 * sleep就是直接使用，是Thread方法
 * 2.进入状态不一样
 * sleep进入的是TIMED_WAITING状态
 * wait()进入WAITING状态
 * 3.
 */
public class Demo11_wait {
    static Object locker = new Object();
    //两个线程交替打印ABABA...
    public static void main(String[] args) {
        //1.打印A
        //2.叫醒t2
        //3.等待
        Thread t1 = new Thread(()->{
            try {
                synchronized (locker) {
                    while (true) {
                        System.out.println("A");
                        locker.notify();
                        locker.wait();
                    }
                }
            }catch (Exception e) {
                        e.printStackTrace();
            }
        });
        Thread t2 = new Thread(()->{
            try {
                synchronized (locker) {
                    while (true) {
                        System.out.println("B");
                        locker.notify();
                        locker.wait();
                    }
                }
            }catch (Exception e) {
                e.printStackTrace();
            }
        });
        t1.start();
        t2.start();
    }
}
